var gulp = require('gulp');
//公共文件
var fileinclude  = require('gulp-file-include');
// 删除文件用的插件
var del = require('del');
// 合并js文件的插件
var concat = require('gulp-concat');
// 合并css文件
var concatCss = require('gulp-concat-css');
// 重命名插件
var rename = require("gulp-rename");
// 压缩js插件
var uglify = require('gulp-uglify');
// 压缩css插件
var cssnano = require('gulp-cssnano');
// 压缩html插件
var minifyHTML = require('gulp-minify-html');
// 压缩图片插件
var imagemin = require('gulp-imagemin');
// 自动打开浏览器插件
var open = require('gulp-open');
// 让gulp按顺序执行
var gulpSequence = require('gulp-sequence');
//拷贝文件
var gulpCopy = require('gulp-file-copy');
//刷新浏览器
var browserSync = require('browser-sync').create();



// 默认任务
gulp.task('default', ['sequence'], function () {
    gulp.src('dist/index.html')
        .pipe(open({app: 'chrome'}));
});

// 流程控制
gulp.task('sequence', gulpSequence('watch', 'clear',
    ['html','mobile_html','s_html','js','mobile_js','s_js', 'css', 'mobile_css', 's_css','image','mobile_image','s_image','copy','copy1','fileinclude']));

// 清空项目文件夹
gulp.task('clear', function (cb) {

    // 删除dist目录下面的所有文件和文件夹
    del(['dist']).then(function (paths) {
        console.log('Deleted files and folders:\n', paths.join('\n'));
    })

    setTimeout(function () {
        return cb();
    }, 1000)

});

// 监听代码变化
gulp.task('watch', function () {
    browserSync.init({
        server: "./"
    });
    gulp.watch('src/*.html', ['html']);
    gulp.watch('src/js/*.js', ['js']);
    gulp.watch('src/css/*.css', ['css']);
    gulp.watch('src/img/**', ['image']);
    gulp.watch('src/mobile/*.html', ['mobile_html']);
    gulp.watch('src/mobile/css/*.css', ['mobile_css']);
    gulp.watch('src/mobile/js/*.js', ['mobile_js']);
    gulp.watch('src/mobile/img/*.img', ['mobile_img']);
    gulp.watch('src/s/*.html', ['s_html']);
    gulp.watch('src/s/css/*.css', ['s_css']);
    gulp.watch('src/s/js/*.js', ['s_js']);
    gulp.watch('src/s/img/*.img', ['s_img']);

});

gulp.task('fileinclude', function() {
  gulp.src(['dist/*.html'])
    .pipe(fileinclude({
      prefix: '@@',
      basepath: '@file'
    }))
    .pipe(gulp.dest('dist'));
});

// 处理js的任务

gulp.task('js', function () {
    // 直接返回gulp.src获取到的文件流
    // 当有多个输出口的话，会把当前执行到的操作先输出。当前的结果会传入下一个pipe中
    return gulp.src('src/js/*.js')
    // 合并js代码的操作
    //.pipe(concat('all.js'))
    //.pipe(gulp.dest('dist/js'))
    // 重命名js操作
        .pipe(uglify())
        //.pipe(rename("all.min.js"))
        .pipe(gulp.dest('dist/js'));
});

gulp.task('mobile_js', function () {
  // 直接返回gulp.src获取到的文件流
  // 当有多个输出口的话，会把当前执行到的操作先输出。当前的结果会传入下一个pipe中
  return gulp.src('src/mobile/js/*.js')
  // 合并js代码的操作
  //.pipe(concat('all.js'))
  //.pipe(gulp.dest('dist/js'))
  // 重命名js操作
    .pipe(uglify())
    //.pipe(rename("all.min.js"))
    .pipe(gulp.dest('dist/mobile/js'));
});

gulp.task('s_js', function () {
  // 直接返回gulp.src获取到的文件流
  // 当有多个输出口的话，会把当前执行到的操作先输出。当前的结果会传入下一个pipe中
  return gulp.src('src/s/js/*.js')
  // 合并js代码的操作
  //.pipe(concat('all.js'))
  //.pipe(gulp.dest('dist/js'))
  // 重命名js操作
    .pipe(uglify())
    //.pipe(rename("all.min.js"))
    .pipe(gulp.dest('dist/s/js'));
});

// 处理css的任务

gulp.task('css', function () {
    return gulp.src('src/css/*.css')
    // 合并css代码
    //.pipe(concatCss("all.css"))
    //.pipe(gulp.dest('dist/css'))
        .pipe(cssnano())
        //.pipe(rename("all.min.css"))
        .pipe(gulp.dest('dist/css'));
});

gulp.task('mobile_css', function () {
  return gulp.src('src/mobile/css/*.css')
  // 合并css代码
  //.pipe(concatCss("all.css"))
  //.pipe(gulp.dest('dist/css'))
  //   .pipe(cssnano())
    //.pipe(rename("all.min.css"))
    .pipe(gulp.dest('dist/mobile/css'));
});

gulp.task('s_css', function () {
  return gulp.src('src/s/css/*.css')
  // 合并css代码
  //.pipe(concatCss("all.css"))
  //.pipe(gulp.dest('dist/css'))
    .pipe(cssnano())
    //.pipe(rename("all.min.css"))
    .pipe(gulp.dest('dist/s/css'));
});


// 处理html的任务

gulp.task('html', function () {
    return gulp.src('src/*.html')
        .pipe(fileinclude())
        .pipe(minifyHTML())
        .pipe(gulp.dest('dist'))
});

gulp.task('mobile_html', function () {
  return gulp.src('src/mobile/*.html')
    .pipe(fileinclude())
    .pipe(minifyHTML())
    .pipe(gulp.dest('dist/mobile'))
});

gulp.task('s_html', function () {
  return gulp.src('src/s/*.html')
    .pipe(fileinclude())
    .pipe(minifyHTML())
    .pipe(gulp.dest('dist/s'))
});


// 处理image的任务

gulp.task('image', function () {
    return gulp.src('src/img/**')
        .pipe(imagemin())
        .pipe(gulp.dest('dist/img'));
});

gulp.task('mobile_image', function () {
  return gulp.src('src/mobile/img/**')
    .pipe(imagemin())
    .pipe(gulp.dest('dist/mobile/img'));
});

gulp.task('s_image', function () {
  return gulp.src('src/s/img/**')
    .pipe(imagemin())
    .pipe(gulp.dest('dist/s/img'));
});


// copy
gulp.task('copy', function () {
  return gulp.src('src/js/lib/**')
    .pipe(gulp.dest("dist/js/lib"))
});

gulp.task('copy1', function () {
  return gulp.src('src/font/**')
    .pipe(gulp.dest("dist/font"))
});
